package com.lei.dao;

import com.lei.entity.Ck;
import com.lei.entity.LayDate;
import com.lei.entity.Ruku;

import java.util.List;
import java.util.Map;

/**
 * @author Lei Chu
 * @Date 2020/10/22 17:12
 */
public interface RukuDao {

    /**
     * 功能描述:添加入库信息
     * @param map Map
     * @return int
     */
    int addRuku(Map map);

    /**
     * 功能描述:添加入库详情信息
     * @param tableData 入库表格中的数据
     * @param rukuid 入库单的主键
     * @return int
     */
    int addRukuDetail(List<Map> tableData,int rukuid);

    /**
     * 功能描述:入库的时候要增加相应图书的数量
     * @param tableData 入库表格中的数据
     * @return int
     */
    int rukuAndAddBookCount(List<Map> tableData);

    /**
     * 功能描述:查询所有的入库信息，可带条件和分页
     * @param ruku Ruku
     * @return java.util.List<com.lei.entity.Ruku>
     */
    List<Ruku> getAllRuku(Ruku ruku);

    /**
     * 功能描述:获得入库单数
     * @param ruku Ruke
     * @return long
     */
    long getCount(Ruku ruku);

    /**
     * 功能描述:通过入库Id查询所对应的入库详情单
     * @param rukuid 入库Id
     * @return java.util.List<java.util.Map>
     */
    List<Map> getAllRukuDetailByRukuId(String rukuid);

    /**
     * 功能描述:添加出库信息
     * @param map Map
     * @return int
     */
    int addCk(Map map);

    /**
     * 功能描述:添加出库详情信息
     * @param tableData 入库表格中的数据
     * @param ckid 出库单的主键
     * @return int
     */
    int addCkDetail(List<Map> tableData, int ckid);

    /**
     * 功能描述:出库的时候要减少相应图书的数量
     * @param tableData 入库表格中的数据
     * @return int
     */
    int ckAndUpdateBookCount(List<Map> tableData);

    /**
     * 功能描述:获得出库单的总数
     * @param ck
     * @return long
     */
    long getCountCk(Ck ck);

    /**
     * 功能描述:查询所有的出库信息，可带条件和分页
     * @param ck Ck
     * @return java.util.List<com.lei.entity.Ruku>
     */
    List<Ck> getAllCk(Ck ck);

    /**
     * 功能描述:通过出库Id查询所对应的入库详情单
     * @param ckid 出库Id
     * @return java.util.List<java.util.Map>
     */
    List<Map> getAllCkDetailByCkId(String ckid);

    /**
     * 功能描述:查询出入库的总金额
     * @param layDate 
     * @return java.util.Map<java.lang.String,java.util.List> 
     */
    Map<String, List> getCkAndRuKuMoney(LayDate layDate);
    
}
